package www.nomina.controller.servlets;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import www.nomina.controller.beans.departamentoBean;
import www.nomina.controller.beans.empleadoBean;
import www.nomina.controller.beans.puestoBean;
import www.nomina.controller.beans.turnoBean;
import www.nomina.controller.beans.usuarioBean;
import www.nomina.model.dao.departamentosDao;
import www.nomina.model.dao.empleadoDao;
import www.nomina.model.dao.puestoDao;
import www.nomina.model.dao.turnoDao;
import www.nomina.model.dao.usuariosDao;

/**
 * Servlet implementation class empresaSVR
 */
@WebServlet(description = "departamentos turnos puestos empleados", urlPatterns = { "/empresaSVR" })
public class empresaSVR extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	private String mapping = "/VIEW/COMMONS/index.jsp";

	usuariosDao usrDao = new usuariosDao();
	departamentosDao deptoDao = new departamentosDao();
	puestoDao puestoDao = new puestoDao();
	turnoDao turnoDao = new turnoDao();
	empleadoDao empleadoDao = new empleadoDao();
	
    departamentoBean depto = new departamentoBean();
    puestoBean puesto = new puestoBean();
    turnoBean turno = new turnoBean();
    empleadoBean empleado = new empleadoBean();
	
    public empresaSVR() {
        super();
       	System.out.println("SVRempresa en ejecucion");
    }

    protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		System.out.println("SVR.Empresa----------> doGet");
		mapping = "/VIEW/COMMONS/index.jsp";
		request.getRequestDispatcher(mapping).forward(request, response);
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		HttpSession sesion = request.getSession();
		
		System.out.println("SVR.Empresa----------> doPost");

		int dispatch = Integer.parseInt(request.getParameter("dispatch"));
		System.out.println("SVR.usuarios.doPost---> Cargando el disparador");

		try {
			usuarioBean sesionPass = (usuarioBean) request.getSession().getAttribute("sesion");
			switch (dispatch) {
			case 0://DEPARTAMENTO ALTA
				System.out.println(sesionPass.getId_usuario());
				depto.setId_usuario(sesionPass.getId_usuario());
				depto.setDepartamento(request.getParameter("nomb_depto"));
				depto.setDescripcion(request.getParameter("desc_depto"));
				
				deptoDao.insertDepartamento(depto);
				request.setAttribute("mensaje","Departamento Agregado");
				mapping = "VIEW/SECURITY/EMPRESA/depto.jsp";
				break;
			case 1:// DEPARTAMENTO Baja
				
				if(sesionPass.getSecreta().equals(request.getParameter("secreta"))){
					deptoDao.deleteDepartameno(Integer.parseInt(request.getParameter("id_depto")));
				}
				break;
			case 2://PUESTOS ALTA
				System.out.println(sesionPass.getId_usuario());
				puesto.setId_usuario(sesionPass.getId_usuario());
				puesto.setPuesto(request.getParameter("nomb_puesto"));
				puesto.setDescripcion(request.getParameter("desc_puesto"));
				
				puestoDao.insertPuesto(puesto);
				request.setAttribute("mensaje","Puesto Agregado");
				mapping = "VIEW/SECURITY/EMPRESA/puestos.jsp";
				break;
			case 3:// PUESTOS BAJA
				
				if(sesionPass.getSecreta().equals(request.getParameter("secreta"))){
					deptoDao.deleteDepartameno(Integer.parseInt(request.getParameter("id_puesto")));
				}
				break;
			case 4://TURNOS ALTA
				System.out.println(sesionPass.getId_usuario());
				turno.setId_usuario(sesionPass.getId_usuario());
				turno.setTurno(request.getParameter("nomb_turno"));
				turno.setDescripcion(request.getParameter("desc_turno"));
				
				turnoDao.insertTurno(turno);
				request.setAttribute("mensaje","Turno Agregado");
				mapping = "VIEW/SECURITY/EMPRESA/turnos.jsp";
				break;
			case 5:// TURNOS BAJA
				
				if(sesionPass.getSecreta().equals(request.getParameter("secreta"))){
					deptoDao.deleteDepartameno(Integer.parseInt(request.getParameter("id_puesto")));
				}
				break;
			case 6://EMPLEADOS ALTA
				empleado.setId_usuario(sesionPass.getId_usuario());
				empleado.setRfc(request.getParameter("rfc_empleado"));
				empleado.setNombre(request.getParameter("nombre"));
				empleado.setPaterno(request.getParameter("paterno"));
				empleado.setMaterno(request.getParameter("materno"));
				empleado.setCurp(request.getParameter("curp"));
				empleado.setImss(request.getParameter("imss"));
				empleado.setCorreo(request.getParameter("correo"));
				empleado.setColonia(request.getParameter("colonia"));
				empleado.setCalle(request.getParameter("calle"));
				empleado.setNumero(request.getParameter("numero"));
				empleado.setCp(request.getParameter("cp"));
				empleado.setEstado(request.getParameter("estado"));
				empleado.setTelefono1(request.getParameter("tel1"));
				empleado.setTelefono2(request.getParameter("tel2"));
				empleado.setGenero(request.getParameter("genero"));
				empleado.setFecha_ingreso(request.getParameter("fecha_ingreso"));
				empleado.setFecha_pago(request.getParameter("fecha_pago"));
				empleado.setFecha_inicial_pago(request.getParameter("fecha_inicial_pago"));
				empleado.setFecha_final_pago(request.getParameter("fecha_final_pago"));				
				empleado.setTipo_contrato(request.getParameter("tipo_contrato"));
				empleado.setSalario(request.getParameter("salario"));
				empleado.setForma_pago(request.getParameter("forma_pago"));
				empleado.setSalario_base(request.getParameter("salario_base"));
				empleado.setDepartamento(request.getParameter("depto"));
				empleado.setPuesto(request.getParameter("puesto"));
				empleado.setTurno(request.getParameter("turno"));
				
				request.setAttribute("cat_depto", deptoDao.getCatalgo());
				request.setAttribute("cat_puestos", puestoDao.getCatalgo());
				request.setAttribute("cat_turnos", turnoDao.getCatalgo());
				
				empleadoDao.alta(empleado);
				
				request.setAttribute("mensaje","Empleado Agregado");
				mapping = "VIEW/SECURITY/EMPRESA/empleados.jsp";
				break;
			case 7:// EMPLEADOS BAJA
				
				if(sesionPass.getSecreta().equals(request.getParameter("secreta"))){
					deptoDao.deleteDepartameno(Integer.parseInt(request.getParameter("id_puesto")));
				}
				break;
			}
			

		} catch (Exception error) {
			System.out.println("ChekSesion.doPost---->" + error.getMessage());
			request.setAttribute("mensaje", error.getMessage());
			mapping = "/VIEW/WARNINGS/errorForms.jsp";
		} finally {
			request.getRequestDispatcher(mapping).forward(request, response);
		}
	}

}
